﻿--Funcao Apartir do código da empresa, busca todas campanhas vinculadas nela.

CREATE OR REPLACE FUNCTION busca_campanha(num_emp int) RETURNS SETOF campanha AS $busca_campanha$
	DECLARE
		num_emp int = num_emp;
		row_emp campanha%ROWTYPE;
	BEGIN
		FOR row_emp IN SELECT * FROM campanha AS C
			INNER JOIN empresa AS e
			ON (e.id = c.id_emp) LOOP
			RETURN NEXT row_emp;
		END LOOP;
		RETURN;
	END;
$busca_campanha$ LANGUAGE plpgsql;

--Funcao dois: A partir do codigo da empresa, busca todas as oportunidades vinculadas nela.

CREATE OR REPLACE FUNCTION busca_oportunidade(num_emp int) RETURNS SETOF campanha AS $busca_oportunidade$
	DECLARE
		num_emp int = num_emp;
		row_emp oportunidade%ROWTYPE;
	BEGIN
		FOR row_emp IN SELECT * FROM oportunidade AS o
			INNER JOIN empresa AS e
			ON (e.id = o.id_emp) LOOP
			RETURN NEXT row_emp;
		END LOOP;
		RETURN;
	END;
$busca_oportunidade$ LANGUAGE plpgsql;

--Funcao três: A partir da oportunidade, busca todas as fases desta ortunidade.

CREATE OR REPLACE FUNCTION busca_fases(num_opor int) RETURNS SETOF fases AS $busca_fases$
	DECLARE 
		num_opo = num;
		row_emp fase%ROWTYPE;
	BEGIN
		FOR row_emp IN SELECT * FROM fases AS f
			INNER JOIN oportunidade AS o
			ON (f.id = o.id_opor) LOOP
			RETURN NEXT row_emp;
		END LOOP;
		RETURN;
	END;
$busca_fases$ LANGUAGE plpgsql;

--Função quatro: Busca todas as pendencias cadastradas.

CREATE OR REPLACE busca_pendencias() RETURNS SETOF pendencias AS $busca_pendencias$
	DECLARE 
		row_emp pendencias%ROWTYPE;
	BEGIN 
		FOR row_emp IN SELECT * FROM pendencias LOOP
			RETURN NEXT row_emp;
		END LOOP;
		RETURN;	
	END;
$busca_pendencias$ LANGUAGE plpgsql;

--Função cinco: A partir da uf, busca todas as cidades.

CREATE OR REPLACE FUNCTION busca_cidades(codigo	int) RETURNS SETOF cidade AS $busca_cidades$
	DECLARE 
		row_emp cidade%ROWTYPE;
		cod_uf = codigo;
	BEGIN
		FOR row_emp IN SELECT * FROM cidade AS c 
			INNER JOIN estado AS e 
			ON(c.codigo = e.codigo_cidade) LOOP
			RETURN NEXT row_emp;
		END LOOP;
		RETURN;		
	END;
$busca_cidades$ LANGUAGE plpgsql;	

--Função Seis
-- Seleciona todos os contatos referente a uma  determinada empresa - Manter contatos.
CREATE FUNCTION Contatos(cod_emp int) RETURNS SETOF Contatos AS $getContato$
DECLARE
	row_contatos Contatos%ROWTYPE;
BEGIN
	for row_contatos in select * from Contatos where empresa_idEmpresa = cod_emp loop
		return next row_contatos;
	end loop;
	return; 
END;
$getContato$ LANGUAGE plpgsql;


--Função Sete 
--Busca a origem de um lead - Manter Leads.
CREATE FUNCTION Busca_origem_leads (cod_leads int) RETURNS Origem_leads AS $getOrigLeads$
DECLARE
	row_origem_leads Origem_leads%ROWTYPE;
BEGIN
	select into row_origem_leads * from Origem_leads where idOrigemLeads = cod_leads;
	return row_origem_leads;
END;
$getOrigLeads$ LANGUAGE plpgsql;


--Função Oito
--Busca as oportunidades de um usuario - Manter oportunidades.
CREATE FUNCTION Busca_oportunidade(cod_usuario int) RETURNS SETOF  Oportunidades AS $getOportUsuario$
DECLARE
	row_oportun Oportunidades%ROWTYPE;
BEGIN
	for row_oportun in select * from Oportunidades where usuarios_idusuario = cod_usuario loop
		return next row_oportun;
	end loop;
	return; 
END;
$getOportUsuario$ LANGUAGE plpgsql;

--Funçao Nove
--Busca das oportunidade - Manter Oportunidade.
CREATE FUNCTION Busca_oportunidade() RETURNS SETOF  Oportunidades AS $getOport$
DECLARE
	row_oportun Oportunidades%ROWTYPE;
BEGIN
	for row_oportun in select * from Oportunidades loop
		return next row_oportun;
	end loop;
	return; 
END;
$getOport$ LANGUAGE plpgsql;


--Funçao Dez
--Busca dos produtos - Manter produtos.
CREATE FUNCTION Busca_produtos() RETURNS SETOF  Produtos AS $getProd$
DECLARE
	row_prod Produtos%ROWTYPE;
BEGIN
	for row_prod in select * from produtos loop
		return next row_prod;
	end loop;
	return; 
END;
$getProd$ LANGUAGE plpgsql;


